package com.tm.vo;

import com.tm.enums.StatusCodeEnum;

/**
 * @author huangp
 * @create 2023-03-01 12:26
 */
public class Result {

    private Integer code;

    private String message;

    private Object data;

    public Result(Integer code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }

    //提供静态方法方便构造Result对象
    //构造代表操作成功且无需自定义状态码且无需返回自定义数据的Result对象
    public static Result success(){
        return new Result(StatusCodeEnum.SUCCESS.getCode(), StatusCodeEnum.SUCCESS.getMessage(), null);
    }
    //构造代表操作成功且无需自定义状态码且需要返回自定义数据的Result对象
    public static Result success(Object data){
        return new Result(StatusCodeEnum.SUCCESS.getCode(), StatusCodeEnum.SUCCESS.getMessage(), data);
    }
    //构造代表操作成功且需要自定义状态码且无需返回自定义数据的Result对象
    public static Result success(StatusCodeEnum statusCodeEnum){
        return new Result(statusCodeEnum.getCode(), statusCodeEnum.getMessage(),null);
    }
    //构造代表操作成功且需要自定义状态码且需要返回自定义数据的Result对象
    public static Result success(StatusCodeEnum statusCodeEnum,Object data){
        return new Result(statusCodeEnum.getCode(), statusCodeEnum.getMessage(),data);
    }


    //构造代表操作成功且无需自定义状态码且无需返回自定义数据的Result对象
    public static Result error(){
        return new Result(StatusCodeEnum.ERROR.getCode(), StatusCodeEnum.ERROR.getMessage(), null);
    }
    //构造代表操作成功且无需自定义状态码且需要返回自定义数据的Result对象
    public static Result error(Object data){
        return new Result(StatusCodeEnum.ERROR.getCode(), StatusCodeEnum.ERROR.getMessage(), data);
    }
    //构造代表操作成功且需要自定义状态码且无需返回自定义数据的Result对象
    public static Result error(StatusCodeEnum statusCodeEnum){
        return new Result(statusCodeEnum.getCode(), statusCodeEnum.getMessage(),null);
    }
    //构造代表操作成功且需要自定义状态码且需要返回自定义数据的Result对象
    public static Result error(StatusCodeEnum statusCodeEnum,Object data){
        return new Result(statusCodeEnum.getCode(), statusCodeEnum.getMessage(),data);
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public Object getData() {
        return data;
    }


}
